Lifecycle Step Old World (Bare Metal / VMs) Kubernetes Approach
Provision Infrastructure Buy servers, rack them, install OS manually Use cloud APIs or scripts to spin up nodes or a managed K8s cluster
Networking Static IPs, manual firewall/VLAN config Auto-assigned IPs, Services, Ingress, and Network Policies
OS & Dependencies Install and patch shared runtimes (Java, .NET, etc.) Use minimal container base images with isolated app dependencies
Deploy App Copy files over SSH, run manual scripts or Octopus/TeamCity Use kubectl apply or Helm to deploy containerized apps
Configuration Config files on disk, hardcoded or edited manually ConfigMaps and Secrets, injected into pods via env vars or volumes
Scaling Clone VMs or request new servers replicas: N or use the Horizontal Pod Autoscaler
Monitoring Nagios, New Relic, log into boxes to grep logs Prometheus + Grafana + FluentBit + Loki
Health Checks Often missing or custom cron scripts Native livenessProbe and readinessProbe in each pod
Recovery Manual restarts or entire box failover Auto-restarts via Kubernetes controllers
Updates / Rollbacks Manual patching, coordination-heavy Declarative rolling updates and one-command rollbacks